/**
 * Copyright (c) 2000-2012 Liferay, Inc. All rights reserved.
 *
 * This library is free software; you can redistribute it and/or modify it under
 * the terms of the GNU Lesser General Public License as published by the Free
 * Software Foundation; either version 2.1 of the License, or (at your option)
 * any later version.
 *
 * This library is distributed in the hope that it will be useful, but WITHOUT
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
 * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
 * details.
 */

package com.bar.carta.service.base;

import com.bar.carta.model.PlatoIdioma;
import com.bar.carta.service.PlatoIdiomaLocalService;
import com.bar.carta.service.PlatoIdiomaService;
import com.bar.carta.service.PlatoLocalService;
import com.bar.carta.service.PlatoService;
import com.bar.carta.service.TipoIdiomaLocalService;
import com.bar.carta.service.TipoIdiomaService;
import com.bar.carta.service.TipoLocalService;
import com.bar.carta.service.TipoService;
import com.bar.carta.service.persistence.PlatoIdiomaPersistence;
import com.bar.carta.service.persistence.PlatoPersistence;
import com.bar.carta.service.persistence.TipoIdiomaPersistence;
import com.bar.carta.service.persistence.TipoPersistence;

import com.liferay.counter.service.CounterLocalService;

import com.liferay.portal.kernel.bean.BeanReference;
import com.liferay.portal.kernel.bean.IdentifiableBean;
import com.liferay.portal.kernel.dao.jdbc.SqlUpdate;
import com.liferay.portal.kernel.dao.jdbc.SqlUpdateFactoryUtil;
import com.liferay.portal.kernel.dao.orm.DynamicQuery;
import com.liferay.portal.kernel.exception.PortalException;
import com.liferay.portal.kernel.exception.SystemException;
import com.liferay.portal.kernel.log.Log;
import com.liferay.portal.kernel.log.LogFactoryUtil;
import com.liferay.portal.kernel.search.Indexer;
import com.liferay.portal.kernel.search.IndexerRegistryUtil;
import com.liferay.portal.kernel.search.SearchException;
import com.liferay.portal.kernel.util.OrderByComparator;
import com.liferay.portal.model.PersistedModel;
import com.liferay.portal.service.PersistedModelLocalServiceRegistryUtil;
import com.liferay.portal.service.ResourceLocalService;
import com.liferay.portal.service.ResourceService;
import com.liferay.portal.service.UserLocalService;
import com.liferay.portal.service.UserService;
import com.liferay.portal.service.persistence.ResourcePersistence;
import com.liferay.portal.service.persistence.UserPersistence;

import java.io.Serializable;

import java.util.List;

import javax.sql.DataSource;

/**
 * The base implementation of the plato idioma local service.
 *
 * <p>
 * This implementation exists only as a container for the default service methods generated by ServiceBuilder. All custom service methods should be put in {@link com.bar.carta.service.impl.PlatoIdiomaLocalServiceImpl}.
 * </p>
 *
 * @author pgonzalm
 * @see com.bar.carta.service.impl.PlatoIdiomaLocalServiceImpl
 * @see com.bar.carta.service.PlatoIdiomaLocalServiceUtil
 * @generated
 */
public abstract class PlatoIdiomaLocalServiceBaseImpl
	implements PlatoIdiomaLocalService, IdentifiableBean {
	/*
	 * NOTE FOR DEVELOPERS:
	 *
	 * Never modify or reference this class directly. Always use {@link com.bar.carta.service.PlatoIdiomaLocalServiceUtil} to access the plato idioma local service.
	 */

	/**
	 * Adds the plato idioma to the database. Also notifies the appropriate model listeners.
	 *
	 * @param platoIdioma the plato idioma
	 * @return the plato idioma that was added
	 * @throws SystemException if a system exception occurred
	 */
	public PlatoIdioma addPlatoIdioma(PlatoIdioma platoIdioma)
		throws SystemException {
		platoIdioma.setNew(true);

		platoIdioma = platoIdiomaPersistence.update(platoIdioma, false);

		Indexer indexer = IndexerRegistryUtil.getIndexer(getModelClassName());

		if (indexer != null) {
			try {
				indexer.reindex(platoIdioma);
			}
			catch (SearchException se) {
				if (_log.isWarnEnabled()) {
					_log.warn(se, se);
				}
			}
		}

		return platoIdioma;
	}

	/**
	 * Creates a new plato idioma with the primary key. Does not add the plato idioma to the database.
	 *
	 * @param platoIdiomaId the primary key for the new plato idioma
	 * @return the new plato idioma
	 */
	public PlatoIdioma createPlatoIdioma(long platoIdiomaId) {
		return platoIdiomaPersistence.create(platoIdiomaId);
	}

	/**
	 * Deletes the plato idioma with the primary key from the database. Also notifies the appropriate model listeners.
	 *
	 * @param platoIdiomaId the primary key of the plato idioma
	 * @throws PortalException if a plato idioma with the primary key could not be found
	 * @throws SystemException if a system exception occurred
	 */
	public void deletePlatoIdioma(long platoIdiomaId)
		throws PortalException, SystemException {
		PlatoIdioma platoIdioma = platoIdiomaPersistence.remove(platoIdiomaId);

		Indexer indexer = IndexerRegistryUtil.getIndexer(getModelClassName());

		if (indexer != null) {
			try {
				indexer.delete(platoIdioma);
			}
			catch (SearchException se) {
				if (_log.isWarnEnabled()) {
					_log.warn(se, se);
				}
			}
		}
	}

	/**
	 * Deletes the plato idioma from the database. Also notifies the appropriate model listeners.
	 *
	 * @param platoIdioma the plato idioma
	 * @throws SystemException if a system exception occurred
	 */
	public void deletePlatoIdioma(PlatoIdioma platoIdioma)
		throws SystemException {
		platoIdiomaPersistence.remove(platoIdioma);

		Indexer indexer = IndexerRegistryUtil.getIndexer(getModelClassName());

		if (indexer != null) {
			try {
				indexer.delete(platoIdioma);
			}
			catch (SearchException se) {
				if (_log.isWarnEnabled()) {
					_log.warn(se, se);
				}
			}
		}
	}

	/**
	 * Performs a dynamic query on the database and returns the matching rows.
	 *
	 * @param dynamicQuery the dynamic query
	 * @return the matching rows
	 * @throws SystemException if a system exception occurred
	 */
	@SuppressWarnings("rawtypes")
	public List dynamicQuery(DynamicQuery dynamicQuery)
		throws SystemException {
		return platoIdiomaPersistence.findWithDynamicQuery(dynamicQuery);
	}

	/**
	 * Performs a dynamic query on the database and returns a range of the matching rows.
	 *
	 * <p>
	 * Useful when paginating results. Returns a maximum of <code>end - start</code> instances. <code>start</code> and <code>end</code> are not primary keys, they are indexes in the result set. Thus, <code>0</code> refers to the first result in the set. Setting both <code>start</code> and <code>end</code> to {@link com.liferay.portal.kernel.dao.orm.QueryUtil#ALL_POS} will return the full result set.
	 * </p>
	 *
	 * @param dynamicQuery the dynamic query
	 * @param start the lower bound of the range of model instances
	 * @param end the upper bound of the range of model instances (not inclusive)
	 * @return the range of matching rows
	 * @throws SystemException if a system exception occurred
	 */
	@SuppressWarnings("rawtypes")
	public List dynamicQuery(DynamicQuery dynamicQuery, int start, int end)
		throws SystemException {
		return platoIdiomaPersistence.findWithDynamicQuery(dynamicQuery, start,
			end);
	}

	/**
	 * Performs a dynamic query on the database and returns an ordered range of the matching rows.
	 *
	 * <p>
	 * Useful when paginating results. Returns a maximum of <code>end - start</code> instances. <code>start</code> and <code>end</code> are not primary keys, they are indexes in the result set. Thus, <code>0</code> refers to the first result in the set. Setting both <code>start</code> and <code>end</code> to {@link com.liferay.portal.kernel.dao.orm.QueryUtil#ALL_POS} will return the full result set.
	 * </p>
	 *
	 * @param dynamicQuery the dynamic query
	 * @param start the lower bound of the range of model instances
	 * @param end the upper bound of the range of model instances (not inclusive)
	 * @param orderByComparator the comparator to order the results by (optionally <code>null</code>)
	 * @return the ordered range of matching rows
	 * @throws SystemException if a system exception occurred
	 */
	@SuppressWarnings("rawtypes")
	public List dynamicQuery(DynamicQuery dynamicQuery, int start, int end,
		OrderByComparator orderByComparator) throws SystemException {
		return platoIdiomaPersistence.findWithDynamicQuery(dynamicQuery, start,
			end, orderByComparator);
	}

	/**
	 * Returns the number of rows that match the dynamic query.
	 *
	 * @param dynamicQuery the dynamic query
	 * @return the number of rows that match the dynamic query
	 * @throws SystemException if a system exception occurred
	 */
	public long dynamicQueryCount(DynamicQuery dynamicQuery)
		throws SystemException {
		return platoIdiomaPersistence.countWithDynamicQuery(dynamicQuery);
	}

	public PlatoIdioma fetchPlatoIdioma(long platoIdiomaId)
		throws SystemException {
		return platoIdiomaPersistence.fetchByPrimaryKey(platoIdiomaId);
	}

	/**
	 * Returns the plato idioma with the primary key.
	 *
	 * @param platoIdiomaId the primary key of the plato idioma
	 * @return the plato idioma
	 * @throws PortalException if a plato idioma with the primary key could not be found
	 * @throws SystemException if a system exception occurred
	 */
	public PlatoIdioma getPlatoIdioma(long platoIdiomaId)
		throws PortalException, SystemException {
		return platoIdiomaPersistence.findByPrimaryKey(platoIdiomaId);
	}

	public PersistedModel getPersistedModel(Serializable primaryKeyObj)
		throws PortalException, SystemException {
		return platoIdiomaPersistence.findByPrimaryKey(primaryKeyObj);
	}

	/**
	 * Returns a range of all the plato idiomas.
	 *
	 * <p>
	 * Useful when paginating results. Returns a maximum of <code>end - start</code> instances. <code>start</code> and <code>end</code> are not primary keys, they are indexes in the result set. Thus, <code>0</code> refers to the first result in the set. Setting both <code>start</code> and <code>end</code> to {@link com.liferay.portal.kernel.dao.orm.QueryUtil#ALL_POS} will return the full result set.
	 * </p>
	 *
	 * @param start the lower bound of the range of plato idiomas
	 * @param end the upper bound of the range of plato idiomas (not inclusive)
	 * @return the range of plato idiomas
	 * @throws SystemException if a system exception occurred
	 */
	public List<PlatoIdioma> getPlatoIdiomas(int start, int end)
		throws SystemException {
		return platoIdiomaPersistence.findAll(start, end);
	}

	/**
	 * Returns the number of plato idiomas.
	 *
	 * @return the number of plato idiomas
	 * @throws SystemException if a system exception occurred
	 */
	public int getPlatoIdiomasCount() throws SystemException {
		return platoIdiomaPersistence.countAll();
	}

	/**
	 * Updates the plato idioma in the database or adds it if it does not yet exist. Also notifies the appropriate model listeners.
	 *
	 * @param platoIdioma the plato idioma
	 * @return the plato idioma that was updated
	 * @throws SystemException if a system exception occurred
	 */
	public PlatoIdioma updatePlatoIdioma(PlatoIdioma platoIdioma)
		throws SystemException {
		return updatePlatoIdioma(platoIdioma, true);
	}

	/**
	 * Updates the plato idioma in the database or adds it if it does not yet exist. Also notifies the appropriate model listeners.
	 *
	 * @param platoIdioma the plato idioma
	 * @param merge whether to merge the plato idioma with the current session. See {@link com.liferay.portal.service.persistence.BatchSession#update(com.liferay.portal.kernel.dao.orm.Session, com.liferay.portal.model.BaseModel, boolean)} for an explanation.
	 * @return the plato idioma that was updated
	 * @throws SystemException if a system exception occurred
	 */
	public PlatoIdioma updatePlatoIdioma(PlatoIdioma platoIdioma, boolean merge)
		throws SystemException {
		platoIdioma.setNew(false);

		platoIdioma = platoIdiomaPersistence.update(platoIdioma, merge);

		Indexer indexer = IndexerRegistryUtil.getIndexer(getModelClassName());

		if (indexer != null) {
			try {
				indexer.reindex(platoIdioma);
			}
			catch (SearchException se) {
				if (_log.isWarnEnabled()) {
					_log.warn(se, se);
				}
			}
		}

		return platoIdioma;
	}

	/**
	 * Returns the plato local service.
	 *
	 * @return the plato local service
	 */
	public PlatoLocalService getPlatoLocalService() {
		return platoLocalService;
	}

	/**
	 * Sets the plato local service.
	 *
	 * @param platoLocalService the plato local service
	 */
	public void setPlatoLocalService(PlatoLocalService platoLocalService) {
		this.platoLocalService = platoLocalService;
	}

	/**
	 * Returns the plato remote service.
	 *
	 * @return the plato remote service
	 */
	public PlatoService getPlatoService() {
		return platoService;
	}

	/**
	 * Sets the plato remote service.
	 *
	 * @param platoService the plato remote service
	 */
	public void setPlatoService(PlatoService platoService) {
		this.platoService = platoService;
	}

	/**
	 * Returns the plato persistence.
	 *
	 * @return the plato persistence
	 */
	public PlatoPersistence getPlatoPersistence() {
		return platoPersistence;
	}

	/**
	 * Sets the plato persistence.
	 *
	 * @param platoPersistence the plato persistence
	 */
	public void setPlatoPersistence(PlatoPersistence platoPersistence) {
		this.platoPersistence = platoPersistence;
	}

	/**
	 * Returns the plato idioma local service.
	 *
	 * @return the plato idioma local service
	 */
	public PlatoIdiomaLocalService getPlatoIdiomaLocalService() {
		return platoIdiomaLocalService;
	}

	/**
	 * Sets the plato idioma local service.
	 *
	 * @param platoIdiomaLocalService the plato idioma local service
	 */
	public void setPlatoIdiomaLocalService(
		PlatoIdiomaLocalService platoIdiomaLocalService) {
		this.platoIdiomaLocalService = platoIdiomaLocalService;
	}

	/**
	 * Returns the plato idioma remote service.
	 *
	 * @return the plato idioma remote service
	 */
	public PlatoIdiomaService getPlatoIdiomaService() {
		return platoIdiomaService;
	}

	/**
	 * Sets the plato idioma remote service.
	 *
	 * @param platoIdiomaService the plato idioma remote service
	 */
	public void setPlatoIdiomaService(PlatoIdiomaService platoIdiomaService) {
		this.platoIdiomaService = platoIdiomaService;
	}

	/**
	 * Returns the plato idioma persistence.
	 *
	 * @return the plato idioma persistence
	 */
	public PlatoIdiomaPersistence getPlatoIdiomaPersistence() {
		return platoIdiomaPersistence;
	}

	/**
	 * Sets the plato idioma persistence.
	 *
	 * @param platoIdiomaPersistence the plato idioma persistence
	 */
	public void setPlatoIdiomaPersistence(
		PlatoIdiomaPersistence platoIdiomaPersistence) {
		this.platoIdiomaPersistence = platoIdiomaPersistence;
	}

	/**
	 * Returns the tipo local service.
	 *
	 * @return the tipo local service
	 */
	public TipoLocalService getTipoLocalService() {
		return tipoLocalService;
	}

	/**
	 * Sets the tipo local service.
	 *
	 * @param tipoLocalService the tipo local service
	 */
	public void setTipoLocalService(TipoLocalService tipoLocalService) {
		this.tipoLocalService = tipoLocalService;
	}

	/**
	 * Returns the tipo remote service.
	 *
	 * @return the tipo remote service
	 */
	public TipoService getTipoService() {
		return tipoService;
	}

	/**
	 * Sets the tipo remote service.
	 *
	 * @param tipoService the tipo remote service
	 */
	public void setTipoService(TipoService tipoService) {
		this.tipoService = tipoService;
	}

	/**
	 * Returns the tipo persistence.
	 *
	 * @return the tipo persistence
	 */
	public TipoPersistence getTipoPersistence() {
		return tipoPersistence;
	}

	/**
	 * Sets the tipo persistence.
	 *
	 * @param tipoPersistence the tipo persistence
	 */
	public void setTipoPersistence(TipoPersistence tipoPersistence) {
		this.tipoPersistence = tipoPersistence;
	}

	/**
	 * Returns the tipo idioma local service.
	 *
	 * @return the tipo idioma local service
	 */
	public TipoIdiomaLocalService getTipoIdiomaLocalService() {
		return tipoIdiomaLocalService;
	}

	/**
	 * Sets the tipo idioma local service.
	 *
	 * @param tipoIdiomaLocalService the tipo idioma local service
	 */
	public void setTipoIdiomaLocalService(
		TipoIdiomaLocalService tipoIdiomaLocalService) {
		this.tipoIdiomaLocalService = tipoIdiomaLocalService;
	}

	/**
	 * Returns the tipo idioma remote service.
	 *
	 * @return the tipo idioma remote service
	 */
	public TipoIdiomaService getTipoIdiomaService() {
		return tipoIdiomaService;
	}

	/**
	 * Sets the tipo idioma remote service.
	 *
	 * @param tipoIdiomaService the tipo idioma remote service
	 */
	public void setTipoIdiomaService(TipoIdiomaService tipoIdiomaService) {
		this.tipoIdiomaService = tipoIdiomaService;
	}

	/**
	 * Returns the tipo idioma persistence.
	 *
	 * @return the tipo idioma persistence
	 */
	public TipoIdiomaPersistence getTipoIdiomaPersistence() {
		return tipoIdiomaPersistence;
	}

	/**
	 * Sets the tipo idioma persistence.
	 *
	 * @param tipoIdiomaPersistence the tipo idioma persistence
	 */
	public void setTipoIdiomaPersistence(
		TipoIdiomaPersistence tipoIdiomaPersistence) {
		this.tipoIdiomaPersistence = tipoIdiomaPersistence;
	}

	/**
	 * Returns the counter local service.
	 *
	 * @return the counter local service
	 */
	public CounterLocalService getCounterLocalService() {
		return counterLocalService;
	}

	/**
	 * Sets the counter local service.
	 *
	 * @param counterLocalService the counter local service
	 */
	public void setCounterLocalService(CounterLocalService counterLocalService) {
		this.counterLocalService = counterLocalService;
	}

	/**
	 * Returns the resource local service.
	 *
	 * @return the resource local service
	 */
	public ResourceLocalService getResourceLocalService() {
		return resourceLocalService;
	}

	/**
	 * Sets the resource local service.
	 *
	 * @param resourceLocalService the resource local service
	 */
	public void setResourceLocalService(
		ResourceLocalService resourceLocalService) {
		this.resourceLocalService = resourceLocalService;
	}

	/**
	 * Returns the resource remote service.
	 *
	 * @return the resource remote service
	 */
	public ResourceService getResourceService() {
		return resourceService;
	}

	/**
	 * Sets the resource remote service.
	 *
	 * @param resourceService the resource remote service
	 */
	public void setResourceService(ResourceService resourceService) {
		this.resourceService = resourceService;
	}

	/**
	 * Returns the resource persistence.
	 *
	 * @return the resource persistence
	 */
	public ResourcePersistence getResourcePersistence() {
		return resourcePersistence;
	}

	/**
	 * Sets the resource persistence.
	 *
	 * @param resourcePersistence the resource persistence
	 */
	public void setResourcePersistence(ResourcePersistence resourcePersistence) {
		this.resourcePersistence = resourcePersistence;
	}

	/**
	 * Returns the user local service.
	 *
	 * @return the user local service
	 */
	public UserLocalService getUserLocalService() {
		return userLocalService;
	}

	/**
	 * Sets the user local service.
	 *
	 * @param userLocalService the user local service
	 */
	public void setUserLocalService(UserLocalService userLocalService) {
		this.userLocalService = userLocalService;
	}

	/**
	 * Returns the user remote service.
	 *
	 * @return the user remote service
	 */
	public UserService getUserService() {
		return userService;
	}

	/**
	 * Sets the user remote service.
	 *
	 * @param userService the user remote service
	 */
	public void setUserService(UserService userService) {
		this.userService = userService;
	}

	/**
	 * Returns the user persistence.
	 *
	 * @return the user persistence
	 */
	public UserPersistence getUserPersistence() {
		return userPersistence;
	}

	/**
	 * Sets the user persistence.
	 *
	 * @param userPersistence the user persistence
	 */
	public void setUserPersistence(UserPersistence userPersistence) {
		this.userPersistence = userPersistence;
	}

	public void afterPropertiesSet() {
		PersistedModelLocalServiceRegistryUtil.register("com.bar.carta.model.PlatoIdioma",
			platoIdiomaLocalService);
	}

	public void destroy() {
		PersistedModelLocalServiceRegistryUtil.unregister(
			"com.bar.carta.model.PlatoIdioma");
	}

	/**
	 * Returns the Spring bean ID for this bean.
	 *
	 * @return the Spring bean ID for this bean
	 */
	public String getBeanIdentifier() {
		return _beanIdentifier;
	}

	/**
	 * Sets the Spring bean ID for this bean.
	 *
	 * @param beanIdentifier the Spring bean ID for this bean
	 */
	public void setBeanIdentifier(String beanIdentifier) {
		_beanIdentifier = beanIdentifier;
	}

	protected Class<?> getModelClass() {
		return PlatoIdioma.class;
	}

	protected String getModelClassName() {
		return PlatoIdioma.class.getName();
	}

	/**
	 * Performs an SQL query.
	 *
	 * @param sql the sql query
	 */
	protected void runSQL(String sql) throws SystemException {
		try {
			DataSource dataSource = platoIdiomaPersistence.getDataSource();

			SqlUpdate sqlUpdate = SqlUpdateFactoryUtil.getSqlUpdate(dataSource,
					sql, new int[0]);

			sqlUpdate.update();
		}
		catch (Exception e) {
			throw new SystemException(e);
		}
	}

	@BeanReference(type = PlatoLocalService.class)
	protected PlatoLocalService platoLocalService;
	@BeanReference(type = PlatoService.class)
	protected PlatoService platoService;
	@BeanReference(type = PlatoPersistence.class)
	protected PlatoPersistence platoPersistence;
	@BeanReference(type = PlatoIdiomaLocalService.class)
	protected PlatoIdiomaLocalService platoIdiomaLocalService;
	@BeanReference(type = PlatoIdiomaService.class)
	protected PlatoIdiomaService platoIdiomaService;
	@BeanReference(type = PlatoIdiomaPersistence.class)
	protected PlatoIdiomaPersistence platoIdiomaPersistence;
	@BeanReference(type = TipoLocalService.class)
	protected TipoLocalService tipoLocalService;
	@BeanReference(type = TipoService.class)
	protected TipoService tipoService;
	@BeanReference(type = TipoPersistence.class)
	protected TipoPersistence tipoPersistence;
	@BeanReference(type = TipoIdiomaLocalService.class)
	protected TipoIdiomaLocalService tipoIdiomaLocalService;
	@BeanReference(type = TipoIdiomaService.class)
	protected TipoIdiomaService tipoIdiomaService;
	@BeanReference(type = TipoIdiomaPersistence.class)
	protected TipoIdiomaPersistence tipoIdiomaPersistence;
	@BeanReference(type = CounterLocalService.class)
	protected CounterLocalService counterLocalService;
	@BeanReference(type = ResourceLocalService.class)
	protected ResourceLocalService resourceLocalService;
	@BeanReference(type = ResourceService.class)
	protected ResourceService resourceService;
	@BeanReference(type = ResourcePersistence.class)
	protected ResourcePersistence resourcePersistence;
	@BeanReference(type = UserLocalService.class)
	protected UserLocalService userLocalService;
	@BeanReference(type = UserService.class)
	protected UserService userService;
	@BeanReference(type = UserPersistence.class)
	protected UserPersistence userPersistence;
	private static Log _log = LogFactoryUtil.getLog(PlatoIdiomaLocalServiceBaseImpl.class);
	private String _beanIdentifier;
}